package daos;
 
import entitys.Campeonato;
import entitys.Usuario;
import entitys.Usuario;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
import utils.JpaUtils;

/**
 *
 * @author Amauri
 */
public class UsuarioDAO {
    
     public void persistir(Usuario usuario){
    
        if (usuario.getId()== null){
            this.insert(usuario);
        }else{
            this.update(usuario);
        }
    }
    
    public void insert(Usuario usuario) {
        EntityManager manager = JpaUtils.getEntityManager();
        try {
            manager.getTransaction().begin();
            manager.persist(usuario);
            manager.getTransaction().commit();
        } catch (Exception e) {
            manager.getTransaction().rollback();
        } finally {
            manager.close();
            JpaUtils.close();
        }
    }
      
      
    public void update(Usuario usuario) {
        EntityManager manager = JpaUtils.getEntityManager();
        try {
            manager.getTransaction().begin();
            manager.merge(usuario);
            manager.getTransaction().commit();
        } catch (Exception e) {
            manager.getTransaction().rollback();
        } finally {
            manager.close();
            JpaUtils.close();
        }
    }
            
    public void delete(Usuario usuario) {
        EntityManager manager = JpaUtils.getEntityManager();
        try {
            manager.getTransaction().begin();
            usuario = manager.merge(usuario);
            manager.remove(usuario);
            manager.getTransaction().commit();
        } catch (Exception e) {
            manager.getTransaction().rollback();
        } finally {
            manager.close();
            JpaUtils.close();
        }
    }
    
    public Usuario findById(Long id) {
        EntityManager manager = JpaUtils.getEntityManager();
        try {
            return manager.find(Usuario.class, id);
        } finally {
            manager.close();
            JpaUtils.close();
        }
    }
    
    public List<Usuario> listAll() {
        EntityManager manager = JpaUtils.getEntityManager();
        try {
            Query query = manager.createQuery("select c from Usuario c", Usuario.class);
            return query.getResultList();
        } finally {
            manager.close();
            JpaUtils.close();
        }
    }
    
    
}   
    
  
